package business;

import java.awt.Color;

import java.util.ArrayList;

import persistence.model.AbstractModel;
import persistence.model.Seance;
import persistence.model.SeanceSpeciale;

public class SeanceSpecialeBL {

	private SeanceSpeciale seanceSpe = null;
	ArrayList<String> listeErreurs = null;
	
	public SeanceSpecialeBL() {}

	public SeanceSpecialeBL(int id) {
		seanceSpe = (SeanceSpeciale) SeanceSpeciale.all().get(id);
	}
	
	public SeanceSpecialeBL(SeanceSpeciale seanceSpeciale) {
		this.seanceSpe = seanceSpeciale;
	}

	public int getId() {
		return seanceSpe.getId();
	}
	
	/**
	 * @return si la demande d'ajout ou de modification est valide ou non
	 */
	public boolean estValidePourModif(){
		boolean estValide = true;
		boolean existeDeja = false;
		for (AbstractModel seanceSpecial : SeanceSpeciale.all())
		{
			SeanceSpeciale ssCourant = (SeanceSpeciale)seanceSpecial;
			if (ssCourant.getNomSeanceSpeciale().equals(seanceSpe.getNomSeanceSpeciale())) {
				estValide = false;
				existeDeja = true;
			}
		}
		if (existeDeja) {
			listeErreurs.add("Cette seance speciale existe déjà.");
		}
		System.out.println(listeErreurs);
		return estValide;
	}

	/**
	 * @return si la demande de suppression est valide ou non
	 */
	/*public boolean estValidePourSuppr(){
		boolean estValide = true;
		return estValide;
	}
	*/
	
	/**
	 * @param id : identifiant de la seance
	 */
	public void ajouterSeanceSpeciale(int id, String desc, int idPeriode, int idSalle) {
		seanceSpe = new SeanceSpeciale(id, desc, "", idPeriode, idSalle);
		seanceSpe.save();
	}
	public ArrayList<String> ajouterSeanceSpeciale(int id, String desc) {
		listeErreurs = new ArrayList<String>();
		seanceSpe = new SeanceSpeciale(id);
		if (this.estValidePourModif()) {
			seanceSpe.save(id);
		}
		return listeErreurs;
	}
	
	/**
	 * @param id : identifiant de la seance
	 */
	public void modifierSeanceSpeciale(int id, String desc, int idPeriode, int idSalle) {
		seanceSpe = new SeanceSpeciale(id, desc, "", idPeriode, idSalle);
		seanceSpe.save(id);
	}
	public ArrayList<String> modifierSeanceSpeciale(int id, String desc) {
		listeErreurs = new ArrayList<String>();
		seanceSpe = new SeanceSpeciale(id);
		if (this.estValidePourModif()) {
			seanceSpe.save(id);
		}
		return listeErreurs;
	}
	
	/**
	 * @param id : identifiant de la seance
	 */
	public void supprimerSeanceSpeciale() {
		seanceSpe = new SeanceSpeciale(this.getIdSeanceSpeciale());
		seanceSpe.delete();
	}
	
	/* Ensemble des getters et setters -> delegation vers la persistance */
		
	public int getIdSeanceSpeciale() {
		return seanceSpe.getId();
	}

	public void setIdSeanceSpeciale(int idSeanceSpeciale) {
		seanceSpe.setId(idSeanceSpeciale);
	}

	public String getDescriptionSeanceSpeciale() {
		return seanceSpe.getDescriptionSeanceSpeciale();
	}

	public void setDescriptionSeanceSpeciale(String descriptionSeanceSpeciale) {
		seanceSpe.setDescriptionSeanceSpeciale(descriptionSeanceSpeciale);
	}
	
	public Color getCouleur() {
		return Color.gray;
	}
	
	public String getNom() {
		return seanceSpe.getNomSeanceSpeciale();
	}
		
	public String getNomSalle() {
		return seanceSpe.getSalle().getNomSalle();
	}
	
	public int getIdPeriode() {
		return seanceSpe.getIdPeriode();
	}
}
